//
//  HMStatusListViewModel.swift
//  Weibo
//
//  Created by HM on 16/5/25.
//  Copyright © 2016年 itheima. All rights reserved.
//  负责给tableView提供模型数据

import UIKit

class HMStatusListViewModel: NSObject {
    
    //定义模型数组
    lazy var statusViewModelArray: [HMStatusViewModel] = [HMStatusViewModel]()
    
    func loadData(isPulling: Bool, finished: (isSuccess: Bool) -> () ) {
        //数组的第一个元素的status.id  
        //根据是否正在转动处理 since_id 和 max_id 为互斥参数
        var since_id: Int64 = 0
        var max_id: Int64 = 0
        
        if isPulling {
            max_id = statusViewModelArray.last?.status?.id ?? 0
        } else {
            since_id = statusViewModelArray.first?.status?.id ?? 0
        }
        
        HMNetworkTools.sharedTools.loadHomePageData(since_id,max_id: max_id) { (responseObject, error) in
            if error != nil {
                //SVProgressHUD.showErrorWithStatus(AppErrorTip)
                //执行失败的回调
                finished(isSuccess: false)
                return
            }
            //            print(responseObject)
            //处理数据 AFN 已经将数据处理成了 OC之后数组或者字典
            guard let dict = responseObject as? [String : AnyObject] else {
                //执行失败的回调
                finished(isSuccess: false)
                return
            }
            //print(dict)
            //根据 "statuses" 获取数组
            guard let array = dict["statuses"] as? [[String : AnyObject]] else {
                //执行失败的回调
                finished(isSuccess: false)
                return
            }
            //            print(array)
            //遍历数组 获取单个字典
            //实例化空数组
            var tempArray = [HMStatusViewModel]()
            for item in array {
                //字典转模型
                let s = HMStatus(dict: item)
                //在数组中添加视图模型
                let viewmodl = HMStatusViewModel(status: s)
                //添加到数组中
                tempArray.append(viewmodl)
            }
            
            //赋值保存
            //            if since_id > 0 {
            //                //下拉刷新数据
            //                self.statusViewModelArray = tempArray + self.statusViewModelArray
            //            }
            
            //            print(tempArray.count)
            //刷新数据
            //self.tableView.reloadData()
            
            if isPulling {
                //加载更多数据
                self.statusViewModelArray = self.statusViewModelArray + tempArray
            } else {
                //刷新新数据
                self.statusViewModelArray = tempArray + self.statusViewModelArray
            }
            
            //执行成功的回调
            finished(isSuccess: true)
        }
    }
}
